package bancosys.tec.persist.dao;

import jmine.tec.persist.PersistMessages;
import bancosys.tec.exception.AbstractException;
import bancosys.tec.exception.LocalizedMessageHolder;
import bancosys.tec.exception.MessageHolder;

/**
 * Lançada quando um bean não é encontrado em uma busca que esperava encontra-lo.
 * 
 * @created Jan 26, 2007
 * @author Gustavo Almeida
 */
public class BeanNotFoundException extends AbstractException {

    private static final long serialVersionUID = -2475070126818664985L;

    public static final String BUNDLE_NAME = "jmine-tec-persist-messages";

    /**
     * Construtor padrão
     * 
     * @param clazz class
     */
    public BeanNotFoundException(Class<?> clazz) {
        this(PersistMessages.BEAN_NOT_FOUND.create(clazz.getName()));
    }

    /**
     * C'tor
     * 
     * @param key A CHAVE do arquivo de i18n.
     * @param arguments ARGUMENTOS da mensagem, se houver.
     * @deprecated use LocalizedMessageHolder
     */
    @Deprecated
    public BeanNotFoundException(String key, Object... arguments) {
        this(new MessageHolder(BUNDLE_NAME, key, arguments));
    }

    /**
     * C'tor
     * 
     * @param key A CHAVE do arquivo de i18n.
     * @param cause a CAUSA desta exception.
     * @param arguments ARGUMENTOS da mensagem, se houver.
     * @deprecated use LocalizedMessageHolder
     */
    @Deprecated
    public BeanNotFoundException(String key, Throwable cause, Object... arguments) {
        this(new MessageHolder(BUNDLE_NAME, key, arguments), cause);
    }

    /**
     * Construtor
     * 
     * @param messageHolder messageHolder
     * @param cause cause
     */
    public BeanNotFoundException(LocalizedMessageHolder messageHolder, Throwable cause) {
        super(messageHolder, cause);
    }

    /**
     * Construtor
     * 
     * @param messageHolder messageHolder
     */
    public BeanNotFoundException(LocalizedMessageHolder messageHolder) {
        super(messageHolder);
    }
}
